−<□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□>− 「白窓君」プロジェクト 「白窓君」デバイスドライバ JLCDDRV.x ver 1.00 Copyright 1997 TNB製作所 −<□■□ はじめに □■□>− これは、ジョイポートに接続する液晶 LCD 「白窓君」(電子出版)用のドライ バです。ですので、「白窓君」がなければ意味の無いソフトです。 −<□■□ 登録 □■□>− 使用法:JLCDDRV.x [PORT] [switch] /K[n] ・・・・・ 機能のシフトキー設定。(def.16 = [XF5]) [XF1]=1 : [XF1]=2 : [XF3]=4 : [XF4]=8 [XF5]=16 : [SHIFT]=32 : [CTRL]=64 [OPT1]=128 : [OPT2]=256 /J ・・・・・・・・ 日本語表示にします。(def.) /E ・・・・・・・・ 英語表示にします。 /N ・・・・・・・・ KEY割り込みは使いません。(def.) /M ・・・・・・・・ KEY割り込みを使う。 /ON ・・・・・・・ 「白窓君」を使用します。 /OF ・・・・・・・ 停止します。 /R ・・・・・・・・ 常駐解除します。 [PORT] は使用したい JOYSTICK PORT を指定します。デフォルト では 2 を使用します。 /K は JLCDDRV で使用するシフトキーを指定します。デフォル トは [XF5] です。ですので、時計、ストップウォッチ切り換え する時は [XF5] 押しながら [UNDO] を押す、ということになり ます。 /J /E は白窓エラーの時に出るメッセージの言葉を選択します。 それ以外には影響しません。デフォルトは日本語(カタカナ)で す。 /M /N は MFP 割り込みでキーチェックを行うかの選択です。/M の場合、割り込みでチェックするのでストップウォッチ等は X68k が何をしていても押したタイミングでコントロールすることが 出来ます。/N の場合、キー入力チェックをしている時、キーチ ェックを行うのでキー入力の無いソフトを動かしているとキーチ ェックがなかなか行われない可能性もあります。基本的に /N で いいと思います。 /ON /OF は LCD の動作モードを設定します。/OF で機能停止し ます。/ON で再開します。また、/ON では JOY PORT の設定、及 び「白窓君」の初期化をしますので、「白窓君」を抜き差しした 場合など、画面が乱れた場合にも使用して下さい。シフトキー + [BS] による操作は、/ON /OF を繰り返しているのと同じです。 常駐時は設定出来ません。 CONFIG.SYS の DEVICE= でも登録出来ます。コマンドライン から登録した場合、メインスレッド以外の白窓は「白窓君」に 表示しません。 −<□■□ 操作 □■□>− JLCDDRV.x は登録しただけでも、「白帯」と日付時計として動いていますが、 ストップウォッチも付いています。その操作も含め一覧しておきます。シフトキー は /K で設定するキーでデフォルトでは [XF5] です。 シフトキー+[UNDO] モード選択。トルグになります。 ・時計 ・ストップウォッチ シフトキー+[ROLLUP] ストップウォッチモードのみ有効です。スタート、停止、再ス タートボタンです。 シフトキー+[ROLLDOWN] ストップウォッチモードで停止時、時間を初期化します。 それ以外は反応無しです。 シフトキー+[BS] 表示のオン/オフを行います。また、「白窓君」の初期化も行 います。オフになった時は JOYPORT を解放するので問題のあ るソフト(後述)の場合、止める様にして下さい。スイッチ /ON /OF と同じ機能です。オフにしていてもストップウォッチ は動いています。 −<□■□ IOCS □■□>− JLCDDRV.x は単体でも白窓、時計と動きますが、サービスコールを使うことで、 ユーザーが(比較的)自由に使うことが出来ます。 コールに付いては別ファイル、「JLCDCALL.mac」に記述されています。ここで は簡単な流れを書いておきます。 「白窓君」用のソフトには2つ考えられます。 一つは、「白窓君」をそのソフトが占領してしまうものです(占領型ソフト)。 デフォルトの時計のようなものです。 もう一つは一時的にメッセージを表示させるソフトです(メッセージ型ソフト)。 メッセージを表示させておく時間を指定できます。あるいは一部を借りて表示 させることも出来ます(占領ソフトとの兼ね合いで消されることもありますが)。 占領型のソフトの場合 ・JLCDDRV があるかチェック。 _JLCD_VER を使用して JLCDDRV があるか、チェックします。 ・既に占領しているソフトはないかチェックします。 moveq #-1,d2 JLCD _JLCD_INIT もし、他で使っていたら占領できせん。 ・占領します。 moveq #1,d2 JLCD _JLCD_INIT ・いろいろ表示します。占領ソフトの場合 _JLCD_PRINT を使用します。 メッセージ型ソフトが動いて画面を破壊する(書き替える)可能性も ありますので、定期的に moveq #0,d2 JLCD _JLCD_INST とし、画面が破壊されていないかチェックし破壊されていたら全文字 表示し直して下さい。 また、メッセージ型ソフトのメッセージが書かれている間は _JLCD_PRINT で表示出来ません(エラー -1 がきます)。もし、必ず表示しないと 行けないものであれば、空ループし再度コールして下さい。 ・終了時は moveq #0,d2 * 占領 JLCD _JLCD_INIT と時計に直して下さい。 同梱のサンプル、JLCDCDC.x のソースも参考にして下さい。 メッセージ型のソフトの場合 ・JLCDDRV があるかチェック。 _JLCD_VER を使用して JLCDDRV があるか、チェックします。 ・表示したいメッセージを時間を決めて書きます。 move.l #$80000000,d2 * CLR & (0,0) から move.l #300,d3 * 3秒間! lea.l mes,a1 JLCD _JLCD_PRINT2 これだけです。 同梱のサンプル、JLCDV.x のソースも参考にして下さい。 また、表示時間を指定しない(0 を指定)方法もあります。時計の場 合、2行目の左の方が開いているので、ここに1文字ばかりを表示させ ることが出来ます。表示時間を指定しないと、破壊したとされないので 基本的に占領ソフトは書き直ししませんので、も残ることになります。 同梱のサンプル、JLCDCON1.x のソースも参考にして下さい。 −<□■□ 同梱サンプル □■□>− サンプルとして3つ同梱しておきます。 JLCDV.x 簡易メッセージ表示 JLCDCON1.x CRT 表示文字モニタ JLCDCDC.x CDC LED 表示 -< JLCDV.x >- これは、「白窓君」にメッセージを表示させるソフトです。2行 16文字 を単純に表示します。CONFIG.SYSの DEVICE でも使用可能ですが、空白文 字(char code $20)が複数列べても1つになってしまうことに注意して 下さい。 JLCDV.x はメッセージ型のソフトで 3秒間メッセージを表示し元に戻す ソフトです。 3秒というのは固定です。アセンブルし直せば変更出来ます。 なお、CONFIG.SYS 登録中は JLCDDRV.x が連続的に機能しないので 3秒で LCD 表示が戻らないことがあります。 僕の環境では CONFIG.SYS で DEVICE = ¥SYS¥JLCDDRV.x 2 -E : DEVICE = ¥SYS¥JLCDV.x 「CONFIG」トウロクチュウ ・・・・・・ SCSI-IOCS : DEVICE = ¥SYS¥JLCDV.x 「CONFIG」トウロクチュウ ・・・・・・・・・・ Codiy : となってます。 -< JLCDCON1.x >- これは、ディスプレイに表示される文字、一文字だけを「白窓君」に表 示させるソフトです。DOS _PUTCHAR _PRINT _FPUTC _FPUTS を使われる文 字列に限ります。 これはディスプレイを消していても、例えば圧縮作業が動いているかな ど見るために作ってみましたが、余り使えません ^^; 。 JLCDCON1.x はメッセージ型のソフトで、表示時間を指定しない(0 を 指定)サンプルになっています。 -< JLCDCDC.x >- これは、TNB製作所の CDC.x の LED を「白窓君」にも表示させようと いうものです。本ソフトを常駐する前に JLCDDRV.x と CDC.x を登録する 必要があります。 残念ながらタイトル名などの表示は出来ません。 JLCDCDC.x は占領型のソフトです。 −<□■□ インストラクション □■□>− JLCD コールの _JLCD_INST で与えられる命令を一覧します。 %00000001 全画面をクリアします。 %00000010 表示座標を $00 にし、表示座標も元へ戻します。表示 内容は変化しません。 %000001XS カーソルの進む方向、表示をシフトするかの設定を行い ます。 X=0 ; デクリメント X=1 ; インクリメント(def.) S=0 ; シフトしません(def.) S=1 ; 表示シフトします。 (注)JLCD CALL の表示ルーチンは「シフト」に対応し ていません。 %00001DCB 全表示の ON/OFF、カーソルの ON/OFF、カーソル位置の 文字のブリンク、を設定します。 D=0 ; 表示を消す D=1 ; 表示します(def.) C=0 ; カーソルを表示しない(def.) C=1 ; カーソルを表示する B=0 ; 文字のブリンク無し(def.) B=1 ; 文字のブリンクあり %0001SM00 表示内容を変えずにカーソル(表示座標)の移動、表示 のシフトを行います。 S=0 ; カーソルの移動 S=1 ; 表示のシフト M=0 ; 右シフト/右移動 M=1 ; 左シフト/左移動 補足)「シフト」に付いて。LCD 内部は 40文字 x 2行 のメモリがありま す。内、普通表示されているのが 16文字 x 2行 です。その表示 場所を変えるのが「シフト」です。現在 JLCDCALL ではこのシフ トを考慮していないので、このシフトを使い表示させるにはコツ がいります。16文字以降 の表示は JLCD_PRINT/2 の座標を指定 して書く用にして下さい。普通に連続して書こうとしても、改行 してしまいます。 −<□■□ 8255 □■□>− 「白窓君」は JOY PORT に繋ぎ、JOY PORT からデータを出力して表示させてい ます。そのため、8255 のモードを普段と変えています。なので、JLCDDRV.x で宣 言した PORT はそのままではジョイスティックを繋いでも反応しません。 ジョイスティックの状態を得る方法は X68k では2通りあります。一つは IOCS の _JOYGET を使う方法と、直接 I/O ポートを見に行く方法です。 普通、IOCS _JOYGET を使っているソフトは JLCDDRV が動いていても問題ありま せん。ただし、「白窓君」を抜き、ジョイスティックをさしても反応しません。で すので、ジョイスティック2つ使うソフトを実行する場合、JLCDDRV.x を停止する といいでしょう。バッチファイルなら JLCDDRV.x -OF ソフト.x JLCDDRV.x -ON というようにしておけばいいでしょう。この時、「白窓君」は抜きましょう。 直接 I/O ポートを見にいくソフトの場合、「白窓君」が誤作動する可能性があ ります。JLCDDRV を停止させていても誤作動することがあります(誤作動といって も壊れるわけではありません。表示がおかしくなるだけです)。また、「白窓君」 が刺さっていると、ジョイスティックが押されている判定になったりするので、抜 いたほうがいいでしょう。 −<□■□ ハード □■□>− 「白窓君」でしようしている液晶 LCD は NDM162 というものなのですが、これは 本当は相互通信で例えば、表示している文字の情報を NDM162 から得ることも出来 るのですが、X68k の JOYPORT の仕様で、X68k -> NDM162 という情報伝達しか出 来ません。JOYSTICK PORT 1 専用にしたら可能でしたが・・・。 ですので、タイミングは Wait で取ってますし、「白窓君」接続チェックもソフ トでは分かりませんでした。 また、「白窓君」が刺さっているとソフトによって、ジョイスティックのボタン が押された判定になってしまう仕様もダイオード等を入れることで解決出来るらし いのですが、今の「白窓君」ではそうなっていません。 −<□■□ 注意 □■□>− TNB製作所は JLCDDRV.x の著作権を保持します。 TNB製作所は この JLCDDRV.x によるトラブルは一切責任を負わないものとし ます。個人の責任において使用して下さい。 バグ、トラブルの御報告はぜひお願いします。出来る限り対処、対応していきま す。 −<□■□ 使用,参考ツール,参考ドキュメント □■□>− * SUPERED.X ver 1.18 T.Nishikawa氏作 * has.x ver 3.08 YuNK氏作 * hlk.x ver 3.01 SALT氏作 白帯のメッセージ(日本語、英語とも)は満開の鎌田氏に用意して頂きました。 ありがとうございました。 −<□■□ 連絡先 □■□>− バグ、要望などありましたら、以下までお願いします。 Mankai Net (03-3985-6227) [69] たんぼ Sunday-Net (03-5467-5911) [sun4882] たんぼ 電脳遊技帝国 (0297-62-5149) [268] たんぼ 〒171 東京都豊島区西池袋 5-17-11 ルート西池袋ビル 901号 満開製作所内 電子出版 代表 中村隆生 あるいは TNB製作所 所長 たんぼ (EOF)